#include "stm32f10x.h"                  // Device header


/**
  * @brief		初始化LED的GPIO
  * @parm		GPIO_Pin：配置GPIO的哪些引脚
  * @retval		无
  */
void LED_Init(uint16_t GPIO_Pin)
{
	//时钟使能
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	//配置GPIO
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin;				//配置引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//I/O口翻转速度
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	//初始为熄灭
	GPIO_SetBits(GPIOA, GPIO_Pin);
}

/**
  * @brief		点亮哪些LED
  * @parm		GPIO_Pin：点亮的引脚
  * @retval		无
  */
void LED_On(uint16_t GPIO_Pin)
{
	GPIO_ResetBits(GPIOA, GPIO_Pin);
}

/**
  * @brief		熄灭哪些LED
  * @parm		GPIO_Pin：熄灭的引脚
  * @retval		无
  */
void LED_Off(uint16_t GPIO_Pin)
{
	GPIO_SetBits(GPIOA, GPIO_Pin);
}

/**
  * @brief		翻转引脚
  * @parm		GPIO_Pin：要翻转的引脚，以二进制形式
  * @retval		无
  */
void LED_Tun(uint16_t GPIO_Pin)
{
	uint16_t Bit = 0x0001, Tmp = 0;
	for(int i = 0; i < 16; ++i)
	{
		Tmp = (GPIO_Pin & Bit);
		if(Tmp)
		{
			if(GPIO_ReadInputDataBit(GPIOA, Tmp) == 0)
				GPIO_SetBits(GPIOA, Tmp);
			else
				GPIO_ResetBits(GPIOA, Tmp);
		}
		Bit <<= 1;
	}
}









